#!/usr/bin/python
# coding=UTF-8
# author: xuegangliu
# description: dom解析xml文件

import xml.dom.minidom

"""
文件对象模型（Document Object Model，简称DOM），是W3C组织推荐的处理可扩展置标语言的标准编程接口。
一个 DOM 的解析器在解析一个 XML 文档时，一次性读取整个文档，把文档中所有元素保存在内存中的一个树结构里，之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构，也可以把修改过的内容写入xml文件。
"""
class MovieHandler():
   def __init__(self,xmlName):
      self.xmlName = xmlName

   def parseXml(self):
      # 使用minidom解析器打开 XML 文档
      DOMTree = xml.dom.minidom.parse(self.xmlName)
      collection = DOMTree.documentElement
      if collection.hasAttribute("shelf"):
         print ("Root element : %s" % collection.getAttribute("shelf"))

      # 在集合中获取所有电影
      movies = collection.getElementsByTagName("movie")

      # 打印每部电影的详细信息
      for movie in movies:
         print ("*****Movie*****")
         if movie.hasAttribute("title"):
            print ("Title: %s" % movie.getAttribute("title"))
         type = movie.getElementsByTagName('type')[0]
         print ("Type: %s" % type.childNodes[0].data)
         format = movie.getElementsByTagName('format')[0]
         print ("Format: %s" % format.childNodes[0].data)
         rating = movie.getElementsByTagName('rating')[0]
         print ("Rating: %s" % rating.childNodes[0].data)
         description = movie.getElementsByTagName('description')[0]
         print ("Description: %s" % description.childNodes[0].data)